1 module hip.event.api;
2 public import hip.global.gamedef;
3 public import hip.event.handlers.inputmap;
4 public import hip.api.input.button:HipButton;
5 public import hip.api.renderer.viewport:Viewport;
6 import hip.hiprenderer;
7 import hip.event.dispatcher;
8 import hip.systems.game;
9 import hip.math.vector;
10 
11 export extern(System)
12 {
13     
14     bool isKeyPressed(char key, uint id = 0) 
15     {
16         return sys.dispatcher.isKeyPressed(key, id);
17     }
18     bool isKeyJustPressed(char key, uint id = 0) 
19     {
20         return sys.dispatcher.isKeyJustPressed(key, id);
21     }
22     bool isKeyJustReleased(char key, uint id = 0) 
23     {
24         return sys.dispatcher.isKeyJustReleased(key, id);
25     }
26     float getKeyDownTime(char key, uint id = 0) 
27     {
28         return sys.dispatcher.getKeyDownTime(key, id);
29     }
30     float getKeyUpTime(char key, uint id = 0) 
31     {
32         return sys.dispatcher.getKeyUpTime(key, id);
33     }
34     ubyte getMulticlickCount(HipMouseButton btn = HipMouseButton.any, uint id = 0)
35     {
36         return sys.dispatcher.getMulticlickCount(btn, id);
37     }
38     bool isDoubleClicked(HipMouseButton btn = HipMouseButton.any, uint id = 0)
39     {
40         return sys.dispatcher.isDoubleClicked(btn, id);
41     }
42     bool isMouseButtonPressed(HipMouseButton btn = HipMouseButton.any, uint id = 0) 
43     {
44         return sys.dispatcher.isMouseButtonPressed(btn, id);
45     }
46     bool isMouseButtonJustPressed(HipMouseButton btn = HipMouseButton.any, uint id = 0) 
47     {
48         return sys.dispatcher.isMouseButtonJustPressed(btn, id);
49     }
50     bool isMouseButtonJustReleased(HipMouseButton btn = HipMouseButton.any, uint id = 0) 
51     {
52         return sys.dispatcher.isMouseButtonJustReleased(btn, id);
53     }
54     float[2] getTouchPosition(uint id=0) 
55     {
56         return cast(float[2])sys.dispatcher.getTouchPosition(id);
57     }
58 
59 
60     float[2] getNormallizedTouchPosition(uint id=0) 
61     {
62         import hip.hiprenderer;
63         float[2] ret = cast(float[2])sys.dispatcher.getTouchPosition(id);
64         ret[0]/= HipRenderer.width;
65         ret[1]/= HipRenderer.height;
66         return ret;
67     }
68 
69     float[2] getWorldTouchPosition(uint id=0, Viewport vp = null) 
70     {
71         import hip.math.utils:clamp;
72         float[2] ret = cast(float[2])sys.dispatcher.getTouchPosition(id);
73         if(vp is null)
74             vp = HipRenderer.getCurrentViewport();
75 
76         ret[0] = clamp(((ret[0] - vp.x) / vp.width) * vp.worldWidth, 0, vp.worldWidth);
77         ret[1] = clamp(((ret[1] - vp.y) / vp.height) * vp.worldHeight, 0, vp.worldHeight);
78         
79 
80         return ret;
81     }
82     float[2] getTouchDeltaPosition(uint id=0) 
83     {
84         return cast(float[2])sys.dispatcher.getTouchDeltaPosition(id);
85     }
86     float[3] getScroll() 
87     {
88         return cast(float[3])sys.dispatcher.getScroll();
89     }
90     ubyte getGamepadCount()
91     {
92         return sys.dispatcher.getGamepadCount();
93     }
94     AHipGamepad getGamepad(ubyte id)
95     {
96         return sys.dispatcher.getGamepad(id);
97     }
98     bool setGamepadVibrating(float vibrationPower, float time, ubyte id = 0)
99     {
100         return sys.dispatcher.setGamepadVibrating(vibrationPower, time, id);
101     }
102     float[3] getAnalog(HipGamepadAnalogs analog, ubyte id = 0)
103     {
104         return cast(float[3])sys.dispatcher.getAnalog(analog);
105     }
106     bool isGamepadButtonPressed(HipGamepadButton btn, ubyte id = 0)
107     {
108         return sys.dispatcher.isGamepadButtonPressed(btn, id);
109     }
110     bool isGamepadButtonJustPressed(HipGamepadButton btn, ubyte id = 0)
111     {
112         return sys.dispatcher.isGamepadButtonJustPressed(btn, id);
113     }
114     bool isGamepadButtonJustReleased(HipGamepadButton btn, ubyte id = 0)
115     {
116         return sys.dispatcher.isGamepadButtonJustReleased(btn, id);
117     }
118     bool areGamepadButtonsPressed(scope HipGamepadButton[] btns, ubyte id = 0)
119     {
120         return sys.dispatcher.areGamepadButtonsPressed(btns, id);
121     }
122     bool areGamepadButtonsJustPressed(scope HipGamepadButton[] btns, ubyte id = 0)
123     {
124         return sys.dispatcher.areGamepadButtonsJustPressed(btns, id);
125     }
126     bool areGamepadButtonsJustReleased(scope HipGamepadButton[] btns, ubyte id = 0)
127     {
128         return sys.dispatcher.areGamepadButtonsJustReleased(btns, id);
129     }
130 
131     float getGamepadBatteryStatus(ubyte id = 0)
132     {
133         return sys.dispatcher.getGamepadBatteryStatus(id);
134     }
135     bool isGamepadWireless(ubyte id = 0)
136     {
137         return sys.dispatcher.isGamepadWireless(id);
138     }
139 
140     const(HipButton)* addKeyboardListener(HipKey key, 
141         HipInputAction action,
142         HipButtonType type = HipButtonType.down,
143         AutoRemove remove = AutoRemove.no)
144     {
145         return sys.scriptInputListener.addKeyboardListener(key,action,type,remove);
146     }
147 
148     const(HipButton)* addTouchListener(HipMouseButton btn, 
149         HipInputAction action,
150         HipButtonType type = HipButtonType.down,
151         AutoRemove remove = AutoRemove.no)
152     {
153         import hip.console.log;
154         logln("Added touch");
155         return sys.scriptInputListener.addTouchListener(btn,action,type,remove);
156     }
157 
158     const(ScrollListener)* addScrollListener(HipScrollAction onScroll,
159         AutoRemove remove = AutoRemove.no)
160     {
161         return sys.scriptInputListener.addScrollListener(onScroll, remove);
162     }
163 
164     const(TouchMoveListener)* addTouchMoveListener(HipTouchMoveAction onMove,
165         AutoRemove remove = AutoRemove.no)
166     {
167         return sys.scriptInputListener.addTouchMoveListener(onMove, remove);
168     }
169 
170     bool removeKeyboardListener(const(HipButton)* btn)
171     {
172         return sys.scriptInputListener.removeKeyboardListener(btn);
173     }
174     bool removeTouchListener(const(HipButton)* btn)
175     {
176         return sys.scriptInputListener.removeTouchListener(btn);
177     }
178     bool removeScrollListener(const(ScrollListener)* l)
179     {
180         return sys.scriptInputListener.removeScrollListener(l);
181     }
182     bool removeTouchMoveListener(const(TouchMoveListener)* l)
183     {
184         return sys.scriptInputListener.removeTouchMoveListener(l);
185     }
186 
187 
188 }